﻿using BCCommon;
using BCDto.Sim.Admin.Admin;
using BCDto.TMS.MoveHouseConfig.MoveHouseConfig;
using BCDto.TMS.MoveHouseConfig.MoveHouseConfig.MoveHouseConfigRequest;
using System.Collections.Generic;

namespace BCService.TMS.MoveHouseConfig.MoveHouseConfig
{
    public interface IMoveHouseConfigService
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="requestDto">搬家配置</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        MoveHouseConfigViewDto Create(MoveHouseConfigRequestDto requestDto, AdminDto admin);
        /// <summary>
        /// 获取信息
        /// </summary>
        /// <param name="moveHouseConfigId">搬家配置id</param>
        /// <returns></returns>
        MoveHouseConfigViewDto GetSingle(long moveHouseConfigId);
        /// <summary>
        /// 删除
        /// </summary>
        /// <param name="moveHouseConfigId">搬家配置id</param>
        /// <param name="admin">管理员信息</param>
        /// <returns></returns>
        bool Delete(long moveHouseConfigId,AdminDto admin);
        /// <summary>
        /// 获取列表(全部)
        /// </summary>
        /// <param name="isEnable">是否启用</param>
        /// <param name="level">分类级别</param>
        /// <returns></returns>
        IEnumerable<MoveHouseConfigViewDto> GetAllList(bool? isEnable, int level);


        /// <summary>
        /// 获取列表(存在搬家设置id)
        /// </summary>
        /// <param name="moveHouseConfigId">搬家配置id</param>
        /// <param name="isEnable">是否启用</param>
        /// <param name="level">级别</param>
        /// <returns></returns>
        IEnumerable<MoveHouseConfigViewDto> GetList(long moveHouseConfigId, bool? isEnable,int level);
        /// <summary>
        /// 获取列表
        /// </summary>
        /// <param name="parentId">合伙人id</param>
        /// <param name="isEnable">是否启用</param>
        /// <param name="level">级别</param>
        /// <returns></returns>
        IEnumerable<MoveHouseConfigViewDto> GetList(int parentId, bool? isEnable, int level);
        /// <summary>
        /// 分页(错误,需修复)
        /// </summary>
        /// <param name="parentId">合伙人id</param>
        /// <param name="isEnable">是否启用</param>
        /// <param name="level">级别</param>
        /// <param name="pageIndex"></param>
        /// <param name="pageSize"></param>
        /// <returns></returns>
        PageableList<MoveHouseConfigViewDto> Query(int parentId, bool? isEnable, int level,
            int pageIndex, int pageSize);
        /// <summary>
        /// 获取所有的二级搬家
        /// </summary>
        /// <param name="isEnable">是否可用</param>
        /// <returns></returns>
        IEnumerable<MoveHouseConfigViewDto> GetAllSecondList(bool? isEnable);

        /// <summary>
        /// 获取列表(用户端)
        /// </summary>
        /// <param name="countyCode">区编码</param>
        /// <returns></returns>
        IEnumerable<MoveHouseConfigViewDto> GetAllClientList(string countyCode);
        /// <summary>
        /// 设置搬家分类图片
        /// </summary>
        /// <param name="moveHouseConfigId">搬家设置id</param>
        /// <param name="requestDto">分类图片</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        bool UpdatePhoto(long moveHouseConfigId, MoveHouseConfigPhotoRequestDto requestDto, AdminDto admin);
        /// <summary>
        /// 启用
        /// </summary>
        /// <param name="moveHouseConfigId">搬家设置id</param>
        /// <param name="admin">管理员</param>
        /// <returns></returns>
        bool Enabled(long moveHouseConfigId, AdminDto admin);
        /// <summary>
        /// 禁用
        /// </summary>
        /// <param name="moveHouseConfigId">搬家设置id</param>
        /// <param name="admin">管理员</param>
        bool Disabled(long moveHouseConfigId, AdminDto admin);
    }
}
